package com.itheima.demo;

public class rubbish {
    public static void main(String[] args) {
        int[]arr=new int[]{1,7,4,3,5,6,9,8,2};
        //冒泡排序
        for(int i=arr.length-1;i>0;i--)
            for(int j=0;j<i;j++){
                if(arr[j]>arr[j+1]){
                    int temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
        for(int i=0;i<arr.length;i++){
            System.out.print(arr[i]+" ");
        }
        //选择排序
        for(int i=0;i<arr.length-1;i++){
            int mindex=i;
            for(int j=i;j<arr.length;j++){
                if(arr[mindex]>arr[j])mindex=j;
            }
            if(mindex!=i){
                int temp=arr[i];
                arr[i]=arr[mindex];
                arr[mindex]=temp;
            }

            }
        //一个数组，很多数是偶数个，一组数是奇数个,找出那个是奇数个的数
        int[]arr2={1,1,1,1,3,3,3,3,5,5,8,8,8,10,10,2,2,3,3};
        int eor=0;
        for(int i=0;i<arr2.length;i++){
            eor^=arr2[i];
        }
        System.out.println("奇数个的数是："+eor);
        //一个数组，很多数是偶数个，两组数是奇数个,找出那两个是奇数个的数
        int[]arr3={1,1,1,1,3,3,3,3,5,5,8,8,8,10,10,2,2,3,3,7,7,7};
        int eor2=0,eor2_=0;
        for(int num:arr3){
            eor2^=num;//eor2=a^b
        }
        int onlyright=eor2&(~eor2+1);//eor2_=a&~a+1,找到最右边的为1的数
        for(int num:arr3){
            if((num&onlyright)!=0)
                eor2_^=num;
        }
        int other=eor2^eor2_;
        System.out.println("奇数个的数是："+eor2+","+"另一个数是："+eor2_);
    }
}
